home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / byt86jun.arc / FRACTAL.ARC / VARIATN.BAS < prev    next >
Encoding:
BASIC Source File  |  1986-03-10  |  2.0 KB  |  65 lines

  1. 1 REM VARIATN.BAS is in MSX BASIC with MUSIC MACRO
  2. 2 REM commands for the Yamaha CX5-M music computer
  3. 4    REM
  4. 5    REM*************************************************************
  5. 6    REM  Copyright 1986  Curtis Bahn, Creative Associates Inc.
  6. 7    REM*************************************************************
  7. 8    REM
  8. 10    CLS
  9. 20    DIM P(6):DIM AP(6):DIM BP(36):DIM CP(216)
  10. 30    DIM D(6):DIM AD(6):DIM BD(36):DIM CD(216)
  11. 40    DT=0:CC=0:BC=0:AC=0:GP=0:R=0:HP=100
  12. 50    _INIT:_INST(1):_INST(2):_INST(3)
  13. 100    INPUT"HOW MANY NOTES IN SET?"; PN:IF PN>6 OR PN<1 THEN GOTO 100
  14. 110    PRINT"INPUT";PN;"PITCH RELATIONSHIPS"
  15. 120    FOR LOOP=1 TO PN
  16. 130    INPUT P(LOOP):IF ABS(P(LOOP))>12 THEN PRINT"TOO BIG":GOTO 130
  17. 135    IF GP<P(LOOP)THEN GP=P(LOOP):IF BP>P(LOOP)THEN BP=P(LOOP)
  18. 140    NEXT LOOP
  19. 150    PRINT "INPUT";PN;"TIME RELATIONSHIPS"
  20. 160    FOR LOOP=1 TO PN
  21. 170    INPUT D(LOOP)
  22. 180    NEXT
  23. 185    INPUT"BROWNIAN RANDOMIZER APPLIED TO PITCH (1 OR 0)";R:IF R>2 GOTO 185
  24. 190    PP=ABS(BP)+ABS(GP)
  25. 195    LP=HP-(3*GP):SK=100/(3*PP)
  26. 200    REM FRACTAL ROUTINE
  27. 205    PRINT"COMPUTING FRACTAL"
  28. 210    FOR A=1 TO PN
  29. 220    AP(A)=P(A)+RC:AD(A)=D(A)
  30. 230    FOR B=1 TO PN
  31. 240    BC=BC+1:IF R =1 THEN GOSUB 700
  32. 245    BP(BC)=AP(A)+P(B)+RC:BD(BC)=D(B)*D(A)
  33. 250    FOR C=1 TO PN
  34. 260    CC=CC+1:IF R=1 THEN GOSUB 700
  35. 270    CP(CC)=BP(BC)+P(C)+RC:CD(CC)=D(C)*BD(BC):DT=DT+CD(CC)
  36. 280    NEXT C: NEXT B: NEXT A
  37. 290    TS=255/DT
  38. 300    REM PLAYING ROUTINE
  39. 310    BC=0:CC=0
  40. 320    FOR A=1 TO PN
  41. 330    _SOUND(1,1,AP(A)+LP):CIRCLE(TC,90-(AP(A)*SK)),6
  42. 340    FOR B= 1 TO PN
  43. 345    BC=BC+1
  44. 350    _SOUND(2,1,BP(BC)+LP):CIRCLE(TC,90-(BP(BC)*SK)),3
  45. 360    FOR C= 1 TO PN
  46. 370    _SOUND(3,1,CP(CC)+LP):CIRCLE(TC,90-(CP(CC)*SK)),1
  47. 380    FOR LOOP=1 TO CD(CC):TC=TC+TS
  48. 385    REM all play statements here for mono playback
  49. 390    _SOUND(3,0,CP(CC)+LP)
  50. 400    NEXT LOOP
  51. 410    NEXT C: NEXT B: NEXT A
  52. 420    _STOP(1): _STOP(2): _STOP(3)
  53. 430    INKEY$=DD$:IF DD$="" THEN GOTO 430
  54. 440    GOTO 300
  55. 500    REM     BROWNIAN ROUTINE
  56. 510    S=0
  57. 520    FOR I= 1 TO 12
  58. 530    S=S+RND(1)
  59. 540    NEXT I
  60. 550    RC=INT(2*(S-6))
  61. 560    RETURN
  62. GOTO 300
  63. 500    REM     BROWNIAN ROUTINE
  64. 510    S=0
  65. 520    FOR